package gestiones;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.LinkedList;
import java.util.List;
import clases.Misiones;
import conectores.Conexion;


public class GestionMisiones {

	public boolean ingresarMisiones(List<Misiones> misiones) {
		Conexion conexion = new Conexion();
		Connection con = null;
        CallableStatement cs = null;
        Misiones objMis= new Misiones();
        boolean resultado = false;
      
        try {
        	conexion.estableceConexion();
			con=conexion.getConexion();
			
			con.setAutoCommit(false);
			if (!misiones.isEmpty()){
				for (int i=0; i< misiones.size();i++){
			objMis= misiones.get(i);
			String query = "{? = call censo_comunal.insertar_misionhabitante(?,?)}";
			cs = con.prepareCall(query);
			cs.registerOutParameter(1, Types.BOOLEAN);
			cs.setInt(2,objMis.getIdMision());
			cs.setInt(3,objMis.getIdHabitante());
						
			cs.execute();
			resultado = cs.getBoolean(1);
	
			if(	resultado){
	              con.commit();
	             
	           }
							}//fin del for
				con.setAutoCommit(true);
			}	
        }catch(Exception ex){
        	 ex.getMessage();
        	        }finally{
        	           try{
        	               if (cs != null)  cs.close();
        	               if (con != null) con.close();
        	           }catch(SQLException esql){
        	                esql.getMessage();
        	           }
        	        }
        	        return resultado;
	}
	
	public List<String> consultarMisionxHabitante(int idHabitante) {
		Conexion conexion = new Conexion();
		Connection con = null;
		PreparedStatement  ps = null;
		ResultSet rs = null;
		List<String> misiones = new LinkedList<String>();
      
        try {
        	conexion.estableceConexion();
			con=conexion.getConexion();
			con.setAutoCommit(false);
			
			if (idHabitante > 0){

			String query = "{call censo_comunal.consulta_misionxhab(?)}";
			ps = con.prepareCall(query);
			ps.setInt(1,idHabitante);
			rs = ps.executeQuery();
			
			while (rs.next())
			{
			   misiones.add(rs.getString(1));
			}
	
			if(	!misiones.isEmpty()){
	              con.commit();
	             
	           }
							
				con.setAutoCommit(true);
			}	
        }catch(Exception ex){
        	 ex.getMessage();
        	        }finally{
        	           try{
        	               if (ps != null)  ps.close();
        	               if (con != null) con.close();
        	               if (rs != null) rs.close();
        	           }catch(SQLException esql){
        	                esql.getMessage();
        	           }
        	        }
        	        return misiones;
	}
	
	
}
